﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AdministracionCooperativa.entidades;
using System.Data;


namespace AdministracionCooperativa.Controlador
{
    class ControladorSocio
    {
        /// <summary>
        /// Verifica si el id proporcionado se encuentra en la bd
        /// </summary>
        /// <param name="idsocio"></param>
        /// <returns></returns>
        public static string ExistePersonabyId(string idsocio)
        {
            using (combisEntities bd = new combisEntities())
            {
                var resultado = (from e in bd.catnom where e.CVEELEC == idsocio select e).FirstOrDefault();
                if (resultado != null)
                    return resultado.CVEELEC;                    
                else
                    return "-1";
            } 
        }
        /// <summary>
        /// Proporcionando el id verifica si es socio
        /// </summary>
        /// <param name="idsocio"></param>
        /// <returns></returns>
        public static string EsSocioById(string idsocio)
        {
            using (combisEntities bd = new combisEntities())
            {
                var resultado = (from e in bd.catnom from f in bd.catpro where e.CVEELEC==idsocio && e.CVEELEC == f.CATNOM_CVEELEC select e).FirstOrDefault();
                if (resultado != null)
                    return resultado.CVEELEC;
                else
                    return "-1";
            }
        }
        /// <summary>
        /// Devuelve los datos de uno de los socios
        /// </summary>
        /// <param name="idsocio"></param>
        /// <returns></returns>
        public static catnom GetSocioById(string idsocio)
        {
            try
            {
                using (combisEntities bd = new combisEntities())
                {
                    var socio = (from e in bd.catnom where e.CVEELEC == idsocio select e).FirstOrDefault();
                    return socio;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Devuelve los datos de todos los socios
        /// </summary>
        /// <returns></returns>
        public static List<catnom> AllSociosByApPa(string paterno)
        {
            try
            {
                using (combisEntities bd = new combisEntities())
                {
                                        
                   /* var personpat = (from e in bd.catnom where e.PATERNO==paterno select e).ToList();                   
                    List<catnom> socio = new List<catnom>();
                    foreach (var item in personpat)
	                {
		                if (EsSocioById(item.CVEELEC)!="-1")
                        {
                            socio.Add(item);                        
                        }
	                }*/
                   
                    var socio = (from e in bd.catnom from f in bd.catpro where e.PATERNO==paterno && e.CVEELEC==f.CATNOM_CVEELEC select e).ToList();
                    return socio;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static string CrearSocio(catnom socio)
        {
            using (combisEntities bd = new combisEntities())
            {
                catpro tabsocio = new catpro();
                tabsocio.CATNOM_CVEELEC = socio.CVEELEC;
                bd.catnom.AddObject(socio);
                bd.catpro.AddObject(tabsocio);
                bd.SaveChanges();
                return socio.CVEELEC;
            }
        }
        public static string ModificarSocio(catnom socio)
        {
            using (combisEntities bd = new combisEntities())
            {
                catnom socioviejo = bd.catnom.SingleOrDefault(c => c.CVEELEC == socio.CVEELEC);
                socioviejo.NOMBRE = socio.NOMBRE;
                socioviejo.PATERNO = socio.PATERNO;
                socioviejo.MATERNO = socio.MATERNO;
                socioviejo.TELEFONO = socio.TELEFONO;
                socioviejo.DIRECCION = socio.DIRECCION;
                bd.SaveChanges();
                return socio.CVEELEC;
            }

        }

        public static string EliminarSocioById(string idsocio)
        {
            using (combisEntities bd = new combisEntities())
            {
                catnom delsoc = bd.catnom.SingleOrDefault(c => c.CVEELEC == idsocio);
                catpro deltabsoc = bd.catpro.SingleOrDefault(c => c.CATNOM_CVEELEC == idsocio);
                bd.catnom.DeleteObject(delsoc);
                bd.catpro.DeleteObject(deltabsoc);
                bd.SaveChanges();
                return delsoc.CVEELEC;
            }
        }
    }
}
